home *** CD-ROM | disk | FTP | other *** search
/ Assassins - Ultimate CD Games Collection 3 / Assassins 3 - The Ultimate Games CD (1997)(Weird Science)[!][Amiga-CD32-CDTV].iso / arcade / tetris_3.1 / tetris.amos / tetris.amosSourceCode < prev   
AMOS Source Code  |  1977-12-31  |  17KB  |  866 lines

  1. Rem Tetris v1.2  
  2. Key Speed 4,4
  3. Dim SCORE(9)
  4. Dim NOME$(9)
  5. Dim A(11,21)
  6. Dim STATISTICA(7)
  7. Global ABBASSO,VECC,DF,_TOCCATO,PRESENTE
  8. Global RUOTATE,VELOCITA,A(),PROSSIMO,LINEE,PUNTI,STATISTICA()
  9. Global _MUSICA,ARCOBALENO,HIGH
  10. HIGH=0 : _MUSICA=1 : ARCOBALENO=1
  11. INIZIO:
  12. Hide On 
  13. PRESENTAZIONE
  14. If _MUSICA=1 Then Music 1
  15. SEB[0,2,16,0]
  16. Unpack 6 To 0
  17. Ink 2
  18. If ARCOBALENO=1
  19.    ARCOBALENO[200]
  20.    Shift Up 14,26,27,1
  21. Else 
  22.    Rainbow Del 
  23. End If 
  24. Ink 2,0
  25. RESET
  26. If HIGH>0
  27.    Proc ALTEZZA
  28. End If 
  29. PROSSIMO
  30. Timer=0
  31. VECC=0
  32. PUNTI[1,1]
  33. Do 
  34.    Clear Key 
  35.    ABBASSO=0
  36.    METTI
  37.    A:
  38.    If Key State(69) Then Goto FINE
  39.    If Key Shift=4
  40.       PAUSE
  41.    End If 
  42.    X$=Inkey$
  43.    HJ=Asc(X$)
  44.    If HJ=30 and ABBASSO=0
  45.       If VECC=0
  46.          VECC=1
  47.          _GIRA
  48.       End If 
  49.    End If 
  50.    If Key State(76)=False
  51.       VECC=0
  52.    End If 
  53.    If HJ=28 and ABBASSO=0
  54.       _DESTRA
  55.    End If 
  56.    If HJ=29 and ABBASSO=0
  57.       _SINISTRA
  58.    End If 
  59.    If HJ=31 Then ABBASSO=1
  60.    If ABBASSO=1
  61.       Inc PUNTI
  62.       PUNTI[1,0]
  63.       _GIU
  64.    End If 
  65.    If Timer<VELOCITA Then Goto A
  66.    Timer=0
  67.    _GIU
  68.    If _TOCCATO=0 Then Goto A
  69.    Sam Play 14
  70.    For S=1 To 2
  71.       For T=1 To 10
  72.          If A(T,S)=1 Then Goto FINE
  73.       Next 
  74.    Next 
  75.    MOV=0
  76.    For T=1 To 10
  77.       For S=1 To 20
  78.          If A(T,S)=1
  79.             Inc MOV
  80.             A(T,S)=2
  81.             If MOV=4
  82.                Goto FISSA
  83.             End If 
  84.          End If 
  85.       Next 
  86.    Next 
  87.    FISSA:
  88.    Put Bob 2
  89.    CANCELLA
  90. Loop 
  91. '
  92. '
  93. Procedure RESET
  94.    For T=1 To 10
  95.       For S=1 To 20
  96.          A(T,S)=0
  97.       Next 
  98.    Next 
  99.    For T=1 To 10
  100.       A(T,21)=5
  101.    Next 
  102.    For T=1 To 20
  103.       A(0,T)=5 : A(11,T)=5
  104.    Next 
  105.    PROSSIMO=0
  106.    PUNTI=0
  107.    LINEE=0
  108.    VELOCITA=16
  109. End Proc
  110. Procedure PUNTI[R,S]
  111.    Ink 2,0
  112.    If R=1 Then Text 190,140,Str$(PUNTI)
  113.    If S=1 Then Text 190,190,Str$(LINEE)
  114.    If LINEE=0 Then Pop Proc
  115.    DELTA=16-(LINEE/15)
  116.    If VELOCITA<>DELTA
  117.       VELOCITA=DELTA
  118.       Sam Play 2
  119.    End If 
  120.    If VELOCITA<5 Then VELOCITA=4
  121. End Proc
  122. Procedure PROSSIMO
  123.    Ink 27
  124.    Bar 187,39 To 242,80
  125.    K=Rnd(6)+1
  126.    If K<6
  127.       PROSSIMO=K*2-1
  128.    Else 
  129.       If K=6
  130.          PROSSIMO=13
  131.       End If 
  132.       If K=7
  133.          PROSSIMO=17
  134.       End If 
  135.    End If 
  136.    If PROSSIMO=1
  137.       Paste Bob 209,39,1
  138.    End If 
  139.    If PROSSIMO=3
  140.       Paste Bob 204,50,3
  141.    End If 
  142.    If PROSSIMO=5 or PROSSIMO=7
  143.       Paste Bob 200,50,PROSSIMO
  144.    End If 
  145.    If PROSSIMO=9
  146.       Paste Bob 198,47,9
  147.    End If 
  148.    If PROSSIMO=13
  149.       Paste Bob 200,44,13
  150.    End If 
  151.    If PROSSIMO=17
  152.       Paste Bob 198,48,17
  153.    End If 
  154. End Proc
  155. Procedure METTI
  156.    RUOTATE=0
  157.    PRESENTE=PROSSIMO
  158.    PROSSIMO
  159.    Bob 2,69,24,PRESENTE
  160.    If PRESENTE=1
  161.       STAT=1 : Ink 2
  162.       A(5,1)=1
  163.       A(5,2)=1
  164.       A(5,3)=1
  165.       A(5,4)=1
  166.    End If 
  167.    If PRESENTE=3
  168.       STAT=2 : Ink 8
  169.       A(5,1)=1
  170.       A(5,2)=1
  171.       A(6,1)=1
  172.       A(6,2)=1
  173.    End If 
  174.    If PRESENTE=5
  175.       STAT=3 : Ink 10
  176.       A(5,1)=1
  177.       A(6,1)=1
  178.       A(6,2)=1
  179.       A(7,2)=1
  180.    End If 
  181.    If PRESENTE=7
  182.       STAT=4 : Ink 5
  183.       A(6,1)=1
  184.       A(7,1)=1
  185.       A(6,2)=1
  186.       A(5,2)=1
  187.    End If 
  188.    If PRESENTE=9
  189.       STAT=5 : Ink 14
  190.       A(5,2)=1
  191.       A(6,2)=1
  192.       A(7,2)=1
  193.       A(7,1)=1
  194.    End If 
  195.    If PRESENTE=13
  196.       STAT=6 : Ink 4
  197.       A(6,1)=1
  198.       A(6,2)=1
  199.       A(6,3)=1
  200.       A(5,3)=1
  201.    End If 
  202.    If PRESENTE=17
  203.       STAT=7 : Ink 28
  204.       A(5,1)=1
  205.       A(6,1)=1
  206.       A(7,1)=1
  207.       A(6,2)=1
  208.    End If 
  209.    STATISTICA[STAT]
  210. End Proc
  211. Procedure _SINISTRA
  212.    LIBERO=0
  213.    MOV=0
  214.    For T=1 To 10
  215.       For S=1 To 20
  216.          If A(T,S)=1
  217.             Inc MOV
  218.             If A(T-1,S)>1
  219.                LIBERO=1
  220.             End If 
  221.             If MOV=4
  222.                Goto B
  223.             End If 
  224.          End If 
  225.       Next 
  226.    Next 
  227.    B:
  228.    If LIBERO=1 Then Pop Proc
  229.    MOV=0
  230.    For T=1 To 10
  231.       For S=1 To 20
  232.          If A(T,S)=1
  233.             A(T,S)=0
  234.             A(T-1,S)=1
  235.             Inc MOV
  236.             If MOV=4
  237.                Goto A
  238.             End If 
  239.          End If 
  240.       Next 
  241.    Next 
  242.    A:
  243.    Bob 2,X Bob(2)-10,,
  244. End Proc
  245. Procedure _DESTRA
  246.    LIBERO=0
  247.    MOV=0
  248.    For T=1 To 10
  249.       For S=1 To 20
  250.          If A(T,S)=1
  251.             Inc MOV
  252.             If A(T+1,S)>1
  253.                LIBERO=1
  254.             End If 
  255.             If MOV=4
  256.                Goto B
  257.             End If 
  258.          End If 
  259.       Next 
  260.    Next 
  261.    B:
  262.    If LIBERO=1 Then Pop Proc
  263.    MOV=0
  264.    For T=10 To 1 Step -1
  265.       For S=1 To 20
  266.          If A(T,S)=1
  267.             A(T,S)=0
  268.             A(T+1,S)=1
  269.             Inc MOV
  270.             If MOV=4
  271.                Goto A
  272.             End If 
  273.          End If 
  274.       Next 
  275.    Next 
  276.    A:
  277.    Bob 2,X Bob(2)+10,,
  278. End Proc
  279. Procedure _GIU
  280.    _TOCCATO=0
  281.    LIBERO=0
  282.    MOV=0
  283.    For S=1 To 20
  284.       For T=1 To 10
  285.          If A(T,S)=1
  286.             Inc MOV
  287.             If A(T,S+1)>1
  288.                LIBERO=1
  289.             End If 
  290.             If MOV=4
  291.                Goto A
  292.             End If 
  293.          End If 
  294.       Next 
  295.    Next 
  296.    A:
  297.    If LIBERO=1 Then _TOCCATO=1 : Pop Proc
  298.    MOV=0
  299.    For S=20 To 1 Step -1
  300.       For T=1 To 10
  301.          If A(T,S)=1
  302.             A(T,S)=0
  303.             A(T,S+1)=1
  304.             Inc MOV
  305.             If MOV=4
  306.                Goto A1
  307.             End If 
  308.          End If 
  309.       Next 
  310.    Next 
  311.    A1:
  312.    Bob 2,,Y Bob(2)+10,
  313. End Proc
  314. Procedure _GIRA
  315.    Inc RUOTATE
  316.    E=I Bob(2)
  317.    If Y Bob(2)=24 Then Pop Proc
  318.    Gosub PR
  319.    If E=1
  320.       Inc Y
  321.       If X>8 or X<2
  322.          Pop Proc
  323.       End If 
  324.       If A(X-1,Y)=0 and A(X+1,Y)=0 and A(X+2,Y)=0
  325.          A(X-1,Y)=1 : A(X+1,Y)=1 : A(X+2,Y)=1
  326.          A(X,Y-1)=0 : A(X,Y+1)=0 : A(X,Y+2)=0
  327.          Bob 2,X Bob(2)-10,Y Bob(2)+10,2
  328.          Pop Proc
  329.       End If 
  330.    End If 
  331.    If E=2
  332.       Inc X
  333.       If Y>18
  334.          Pop Proc
  335.       End If 
  336.       If A(X,Y-1)=0 and A(X,Y+1)=0 and A(X,Y+2)=0
  337.          A(X,Y-1)=1 : A(X,Y+1)=1 : A(X,Y+2)=1
  338.          A(X-1,Y)=0 : A(X+1,Y)=0 : A(X+2,Y)=0
  339.          Bob 2,X Bob(2)+10,Y Bob(2)-10,1
  340.       End If 
  341.    End If 
  342.    If E=3 or E=4
  343.       Pop Proc
  344.    End If 
  345.    If E=5
  346.       If Y>18
  347.          Pop Proc
  348.       End If 
  349.       If A(X,Y+1)=0 and A(X,Y+2)=0
  350.          A(X,Y)=0 : A(X+2,Y+1)=0
  351.          A(X,Y+1)=1 : A(X,Y+2)=1
  352.          Bob 2,,,6
  353.          Pop Proc
  354.       End If 
  355.    End If 
  356.    If E=6
  357.       If X>19
  358.          Pop Proc
  359.       End If 
  360.       If A(X-1,Y)=0 and A(X+1,Y+1)=0
  361.          A(X-1,Y)=1 : A(X+1,Y+1)=1
  362.          A(X-1,Y+1)=0 : A(X-1,Y+2)=0
  363.          Bob 2,,,5
  364.       End If 
  365.    End If 
  366.    If E=7
  367.       If Y>18
  368.          Pop Proc
  369.       End If 
  370.       If A(X,Y+2)=0 and A(X-1,Y)=0
  371.          A(X,Y+2)=1 : A(X-1,Y)=1
  372.          A(X,Y)=0 : A(X+1,Y)=0
  373.          Bob 2,,,8
  374.          Pop Proc
  375.       End If 
  376.    End If 
  377.    If E=8
  378.       If X>18
  379.          Pop Proc
  380.       End If 
  381.       If A(X+1,Y)=0 and A(X+2,Y)=0
  382.          A(X+1,Y)=1 : A(X+2,Y)=1
  383.          A(X,Y)=0 : A(X+1,Y+2)=0
  384.          Bob 2,,,7
  385.       End If 
  386.    End If 
  387.    If E=9
  388.       If A(X-1,Y)=0 and A(X,Y+2)=0
  389.          A(X-1,Y)=1 : A(X,Y+2)=1
  390.          A(X-2,Y+1)=0 : A(X-1,Y+1)=0
  391.          Bob 2,X Bob(2)+10,,10
  392.          Pop Proc
  393.       End If 
  394.    End If 
  395.    If E=10
  396.       If X>8
  397.          Pop Proc
  398.       End If 
  399.       If A(X+2,Y)=0 and A(X,Y+1)=0
  400.          A(X+2,Y)=1 : A(X,Y+1)=1
  401.          A(X+1,Y+1)=0 : A(X+1,Y+2)=0
  402.          Bob 2,,,11
  403.          Pop Proc
  404.       End If 
  405.    End If 
  406.    If E=11
  407.       If A(X,Y+2)=0 and A(X+1,Y+2)=0
  408.          A(X,Y+2)=1 : A(X+1,Y+2)=1
  409.          A(X+1,Y)=0 : A(X+2,Y)=0
  410.          Bob 2,,,12
  411.          Pop Proc
  412.       End If 
  413.    End If 
  414.    If E=12
  415.       If X>8
  416.          Pop Proc
  417.       End If 
  418.       If A(X+1,Y)=0 and A(X+1,Y+1)=0 and A(X-1,Y+1)=0
  419.          A(X+1,Y)=1 : A(X+1,Y+1)=1 : A(X-1,Y+1)=1
  420.          A(X,Y)=0 : A(X,Y+2)=0 : A(X+1,Y+2)=0
  421.          Bob 2,X Bob(2)-10,,9
  422.       End If 
  423.    End If 
  424.    If E=13
  425.       If X<3
  426.          Pop Proc
  427.       End If 
  428.       If A(X-2,Y+1)=0 and A(X-1,Y+1)=0
  429.          A(X-2,Y+1)=1 : A(X-1,Y+1)=1
  430.          A(X,Y)=0 : A(X-1,Y+2)=0
  431.          Bob 2,X Bob(2)-10,Y Bob(2)+10,14
  432.          Pop Proc
  433.       End If 
  434.    End If 
  435.    If E=14
  436.       If A(X+1,Y-1)=0 and A(X+2,Y-1)=0 and A(X+1,Y+1)=0
  437.          A(X+1,Y-1)=1 : A(X+2,Y-1)=1 : A(X+1,Y+1)=1
  438.          A(X,Y)=0 : A(X+2,Y)=0 : A(X+2,Y+1)=0
  439.          Bob 2,X Bob(2)+10,Y Bob(2)-10,15
  440.          Pop Proc
  441.       End If 
  442.    End If 
  443.    If E=15
  444.       If X>8
  445.          Pop Proc
  446.       End If 
  447.       If A(X+1,Y+1)=0 and A(X+2,Y+1)=0
  448.          A(X+1,Y+1)=1 : A(X+2,Y+1)=1
  449.          A(X+1,Y)=0 : A(X,Y+2)=0
  450.          Bob 2,,,16
  451.          Pop Proc
  452.       End If 
  453.    End If 
  454.    If E=16
  455.       If A(X+1,Y)=0 and A(X+1,Y+2)=0 and A(X,Y+2)=0
  456.          A(X+1,Y)=1 : A(X+1,Y+2)=1 : A(X,Y+2)=1
  457.          A(X,Y)=0 : A(X,Y+1)=0 : A(X+2,Y+1)=0
  458.          Bob 2,,,13
  459.          Pop Proc
  460.       End If 
  461.    End If 
  462.    If E=17
  463.       A(X+1,Y-1)=1 : A(X,Y)=0
  464.       Bob 2,X Bob(2)+10,Y Bob(2)-10,18
  465.       Pop Proc
  466.    End If 
  467.    If E=18
  468.       If A(X-1,Y+1)=0
  469.          A(X-1,Y+1)=1 : A(X,Y+2)=0
  470.          Bob 2,X Bob(2)-10,,19
  471.          Pop Proc
  472.       End If 
  473.    End If 
  474.    If E=19
  475.       If A(X,Y+2)=0
  476.          A(X,Y+2)=1 : A(X+1,Y+1)=0
  477.          Bob 2,,,20
  478.          Pop Proc
  479.       End If 
  480.    End If 
  481.    If E=20
  482.       If A(X+1,Y+1)=0
  483.          A(X+1,Y+1)=1 : A(X,Y)=0
  484.          Bob 2,,Y Bob(2)+10,17
  485.          Pop Proc
  486.       End If 
  487.    End If 
  488.    Pop Proc
  489.    PR:
  490.    For S=1 To 20
  491.       For T=1 To 10
  492.          If A(T,S)=1
  493.             X=T : Y=S : Return 
  494.          End If 
  495.       Next 
  496.    Next 
  497.    Return 
  498. End Proc
  499. Procedure CANCELLA
  500.    CONT=0
  501.    For T=1 To 20
  502.       MOV=0
  503.       For S=1 To 10
  504.          If A(S,T)<>0
  505.             Inc MOV
  506.          End If 
  507.       Next 
  508.       If MOV=10
  509.          Inc CONT
  510.          For Q=T To 1 Step -1
  511.             For W=1 To 10
  512.                A(W,Q)=A(W,Q-1)
  513.             Next 
  514.          Next 
  515.          _TOGLI[T]
  516.       End If 
  517.    Next 
  518.    If CONT=1
  519.       PU=10
  520.    End If 
  521.    If CONT=2
  522.       PU=25
  523.    End If 
  524.    If CONT=3
  525.       PU=45
  526.    End If 
  527.    If CONT=4
  528.       PU=80
  529.       Sam Play 12 : Wait 25
  530.    End If 
  531.    Add PUNTI,PU
  532.    PUNTI[1,1]
  533.    If CONT=0 Then Wait 8
  534. End Proc
  535. Procedure _TOGLI[LI]
  536.    Sam Play 7
  537.    W=(LI-1)*10+25
  538.    Pack S To 10,30,25,138,W
  539.    Ink 9
  540.    For T=0 To 4
  541.       Wait Vbl 
  542.       Draw 30,W+T To 129,W+T
  543.       Draw 30,W+9-T To 129,W+9-T
  544.    Next 
  545.    Ink 0
  546.    Bar 30,25 To 129,39
  547.    Unpack 10,30,35
  548.    Inc LINEE
  549. End Proc
  550. Procedure PAUSE
  551.    DELI=Timer
  552.    Unpack 15 To 1
  553.    Repeat 
  554.    Until Key Shift=0
  555.    Screen Close 1
  556.    Timer=DELI
  557. End Proc
  558. Procedure SEB[SCR,C,N,D]
  559.    'A Screen Eater by Paul Hickman (ph@doc.ic.ac.uk)
  560.    'N = No. Strips & must be a factor of screen height
  561.    'D = Delay : 0 = Fastest Speed : >0 = Slower 
  562.    Screen SCR
  563.    Ink C : W=Screen Height/N
  564.    For A=0 To N-1
  565.       Draw 0,A*W To Screen Width,A*W
  566.    Next 
  567.    Draw 0,Screen Height-1 To Screen Width,Screen Height-1
  568.    Screen Swap 
  569.    For A=0 To W/2
  570.       Screen Copy Physic To Logic
  571.       For B=0 To N-1
  572.          Screen Copy Physic,0,B*W+A,Screen Width,B*W+W/2-1 To Logic,0,B*W+A+1
  573.          Screen Copy Physic,0,B*W+W/2+1,Screen Width,(B+1)*W-A+1 To Logic,0,B*W+W/2
  574.       Next 
  575.       Screen Swap 
  576.       If D>0 Then Wait D
  577.       Wait Vbl 
  578.    Next 
  579. End Proc
  580. '
  581. Procedure PRESENTAZIONE
  582.    ARCOBALENO[160]
  583.    Unpack 9 To 0
  584.    Ink 27
  585.    Text 10,10,"F1- Start    F2- Options    F3- Info"
  586.    Do 
  587.       If Key State(69) Then End 
  588.       If Key State(80) Then Pop Proc
  589.       If Key State(81) Then OPTIONS
  590.       If Key State(82) Then INFO
  591.    Loop 
  592. End Proc
  593. Procedure OPTIONS
  594.    Unpack 12 To 0
  595.    Show On 
  596.    Limit Mouse 129,55 To 424,292
  597.    X Mouse=250
  598.    Y Mouse=150
  599.    Every 3 Proc JO
  600.    A$=""
  601.    For T=0 To 9
  602.       A$=A$+"(9"+Str$(T)+"0,2)"
  603.    Next 
  604.    For T=9 To 0
  605.       A$=A$+"(9"+Str$(T)+"0,2)"
  606.    Next 
  607.    Flash 5,A$
  608.    Reserve Zone 11
  609.    Set Zone 1,161,94 To 195,116
  610.    Set Zone 2,161,118 To 195,140
  611.    Set Zone 3,65,166 To 112,190
  612.    For T=1 To 8
  613.       Set Zone T+3,257,((T-1)*19)+81 To 270,((T-1)*19)+95
  614.    Next 
  615.    Show On 
  616.    Bob 3,254,(HIGH*19)+79,23
  617.    If _MUSICA=1
  618.       Bob 1,161,94,21
  619.    Else 
  620.       Bob 1,161,94,22
  621.    End If 
  622.    If ARCOBALENO=1
  623.       Bob 2,161,118,21
  624.    Else 
  625.       Bob 2,161,118,22
  626.    End If 
  627.    Do 
  628.       If Mouse Click or Fire(1) or Key Shift=2
  629.          DELIU=Mouse Zone
  630.          If DELIU>3
  631.             HIGH=DELIU-4
  632.             Bob 3,,(HIGH*19)+79,
  633.          End If 
  634.          If DELIU=1
  635.             If _MUSICA=1
  636.                _MUSICA=0
  637.                Bob 1,,,22
  638.             Else 
  639.                _MUSICA=1
  640.                Bob 1,,,21
  641.             End If 
  642.          End If 
  643.          If DELIU=2
  644.             If ARCOBALENO=1
  645.                ARCOBALENO=0
  646.                Bob 2,,,22
  647.             Else 
  648.                ARCOBALENO=1
  649.                Bob 2,,,21
  650.             End If 
  651.          End If 
  652.          If DELIU=3
  653.             Hide On 
  654.             Reset Zone 
  655.             Flash Off 
  656.             Unpack 9 To 0
  657.             Ink 27
  658.             Text 10,10,"F1- Start    F2- Options    F3- Info"
  659.             Every Off 
  660.             Pop Proc
  661.          End If 
  662.          Repeat 
  663.          Until Fire(1)=False and Key Shift=0
  664.       End If 
  665.    Loop 
  666. End Proc
  667. Procedure INFO
  668.    PAS=6
  669.    Ink 27,0
  670.    For T=40 To 211 Step 9
  671.       Read LINE$
  672.       K=8
  673.       U=0
  674.       For S=1 To Len(LINE$)
  675.          If Mouse Click Then PAS=1
  676.          Inc U
  677.          If Mid$(LINE$,U,1)<>" "
  678.             Shoot 
  679.             Text K,T,Mid$(LINE$,U,1)
  680.             If PAS=6
  681.                Wait PAS
  682.             End If 
  683.          Else 
  684.             If PAS=6
  685.                Wait 2
  686.             End If 
  687.          End If 
  688.          Add K,7
  689.       Next 
  690.       Bell 70
  691.       If PAS=6 Then Wait 20
  692.    Next 
  693.    Do 
  694.       Exit If Mouse Click
  695.    Loop 
  696.    Unpack 9 To 0
  697.    Ink 27
  698.    Text 10,10,"F1- Start    F2- Options    F3- Info"
  699.    Data "Welcome in this new TETRIS!!"
  700.    Data "To play it use the arrows:"
  701.    Data "<- to move left   to move right ->"
  702.    Data "^ to rotate       to move down |"
  703.    Data "                -----"
  704.    Data "Beware: If you move down, you can't"
  705.    Data "    change its position, but you make"
  706.    Data "    much more points."
  707.    Data "The level change every 15 lines!"
  708.    Data "Caps Lock to PAUSE."
  709.    Data "Press ESC to quit."
  710.    Data "                -----"
  711.    Data "Entirely programmed in AMOS The Creator"
  712.    Data "                -----"
  713.    Data "To have the sources code write to:"
  714.    Data " By MICHELE BERIONNE"
  715.    Data "    Via RUBICONE 42"
  716.    Data "    00198 ROME ITALY"
  717.    Data "    "
  718.    Data "Thank you! And enjoy yourself!"
  719. End Proc
  720. Procedure JO
  721.    If Key State(76) Then B=-1
  722.    If Key State(77) Then B=1
  723.    If Key State(79) Then A=-1
  724.    If Key State(78) Then A=1
  725.    If A=1 Then X Mouse=X Mouse+5
  726.    If A=-1 Then X Mouse=X Mouse-5
  727.    If B=1 Then Y Mouse=Y Mouse+5
  728.    If B=-1 Then Y Mouse=Y Mouse-5
  729.    Every On 
  730. End Proc
  731. Procedure ALTEZZA
  732.    STEF=HIGH*2
  733.    For K=20 To 20-STEF Step -1
  734.       For L=1 To 10
  735.          FR=Rnd(12)
  736.          If FR>4
  737.             A(L,K)=2
  738.          End If 
  739.       Next 
  740.    Next 
  741.    For K=20 To 20-STEF Step -1
  742.       W=0
  743.       For L=1 To 10
  744.          Add W,A(L,K)
  745.       Next 
  746.       If W=20
  747.          AZE=Rnd(9)+1
  748.          A(AZE,K)=0
  749.       End If 
  750.    Next 
  751.    For K=20 To 20-STEF Step -1
  752.       For L=1 To 10
  753.          If A(L,K)=2
  754.             Paste Bob((L-1)*10)+29,((K-1)*10)+24,Rnd(6)+25
  755.          End If 
  756.       Next 
  757.    Next 
  758. End Proc
  759. Procedure RIEMPI
  760.    For K=20 To 1 Step -1
  761.       For L=1 To 10
  762.          If A(L,K)=0
  763.             Paste Bob((L-1)*10)+29,((K-1)*10)+24,Rnd(6)+25
  764.          End If 
  765.       Next 
  766.       Wait 3
  767.    Next 
  768. End Proc
  769. Procedure ARCOBALENO[W]
  770.    Set Rainbow 0,0,30,"","(1,1,15)(1,-1,15)",""
  771.    Rainbow 0,0,49,32
  772.    Set Rainbow 1,0,30,"","","(1,1,15)(1,-1,15)"
  773.    Rainbow 1,0,49,32
  774.    Set Rainbow 2,0,30,"(1,1,15)(1,-1,15)","",""
  775.    Rainbow 2,0,49,32
  776.    Set Rainbow 3,0,30,"(1,1,15)(1,-1,15)","","(1,1,15)(1,-1,15)"
  777.    Rainbow 3,0,49,32
  778.    Channel 0 To Rainbow 0
  779.    Channel 1 To Rainbow 1
  780.    Channel 2 To Rainbow 2
  781.    Channel 3 To Rainbow 3
  782.    E$=Str$(W)
  783.    Amal 0,"Loop: Move 0,"+E$+",100 ; Move 0,-"+E$+",100 ; JL"
  784.    Amal 1,"For R1=1 To 25 ; Next R1 ; Loop: Move 0,"+E$+",100 ; Move 0,-"+E$+",100 ; JL "
  785.    Amal 2,"For R2=1 To 50 ; Next R2 ; Loop: Move 0,"+E$+",100 ; Move 0,-"+E$+",100 ; JL"
  786.    Amal 3,"For R3=1 To 75 ; Next R3 ; Loop: Move 0,"+E$+",100 ; Move 0,-"+E$+",100 ; JL"
  787.    Amal On 
  788. End Proc
  789. Procedure STATISTICA[REP]
  790.    Inc STATISTICA(REP)
  791.    If STATISTICA(REP)>92 Then Pop Proc
  792.    X=((REP-1)*4)+259
  793.    Y=224-((STATISTICA(REP)-1)*2)
  794.    Box X,Y To X+1,Y-1
  795. End Proc
  796. '
  797. '
  798. '
  799. FINE:
  800. Sam Play 4
  801. Boom 
  802. Music Off 
  803. Shift Off 
  804. Amal Off 
  805. RIEMPI
  806. Rainbow Del 
  807. Fade 15
  808. Wait 50
  809. Open Random 1,"topotto"
  810. Field 1,3 As NOME$,5 As SCO$
  811. For T=1 To 8
  812.    Get 1,T
  813.    NOME$(T)=NOME$ : SCORE(T)=Val(SCO$)
  814. Next 
  815. Close 1
  816. PIT=PUNTI
  817. Unpack 16 To 0
  818. Ink 5,7
  819. Text 50,230,"You scored:"+Str$(PIT)
  820. Ink 9,14
  821. If PIT<SCORE(8)
  822.    For T=1 To 8
  823.       Text 100,110+((T-1)*10),NOME$(T)
  824.       Text 140,110+((T-1)*10),Str$(SCORE(T))
  825.    Next 
  826.    Repeat 
  827.    Until Fire(1) or Mouse Click
  828.    Goto INIZIO
  829. End If 
  830. For T=8 To 1 Step -1
  831.    If PIT>SCORE(T) Then POS=T
  832. Next 
  833. For T=8 To POS Step -1
  834.    SCORE(T+1)=SCORE(T)
  835.    NOME$(T+1)=NOME$(T)
  836. Next 
  837. SCORE(POS)=PIT
  838. NOME$(POS)=""
  839. Clear Key 
  840. For T=1 To 8
  841.    Text 100,110+((T-1)*10),NOME$(T)
  842.    Text 140,110+((T-1)*10),Str$(SCORE(T))
  843. Next 
  844. NO$=""
  845. Clear Key 
  846. Ink 14,7
  847. Text 100,110+(POS-1)*10,"   "
  848. Ink 9,14
  849. Repeat 
  850.    A$=Inkey$
  851.    If A$<>""
  852.       NO$=NO$+A$
  853.       Text 100,110+((POS-1)*10),NO$
  854.    End If 
  855. Until Len(NO$)=3
  856. NOME$(POS)=NO$
  857. Open Random 1,"topotto"
  858. Field 1,3 As NOME$,5 As SCO$
  859. For T=1 To 8
  860.    NOME$=NOME$(T) : SCO$=Str$(SCORE(T))
  861.    Put 1,T
  862. Next 
  863. Close 1
  864. Repeat 
  865. Until Fire(1) or Mouse Click
  866. Goto INIZIO